<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // exec()    用正则表达式检索字符串, 将字符串中符合规则的某个或某点字符取出,放到新数组中

    // var str = "2022-12-12";
    // var reg = /^\d{4}-\d{1,2}-\d{1,2}$/;
    // console.log(reg.test(str));  // true
    // console.log(reg.exec(str));  // "2022-12-12"


    // 群组: 
    // 首先将整个表达式作为规则匹配,如果能匹配到,在将子表达式分别匹配,将匹配的内容放到数组中
    var str = "2022-12-12";
    var reg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;

    // 如何取值
    var arr = reg.exec(str);
    console.log(arr);
    console.log(arr[0]);  // 整个表达式
    console.log(arr[1]);  // 子表达式1
    console.log(arr[2]);  // 子表达式2
    console.log(arr[3]);  // 子表达式3


    // 在正则表达式中, 1. 小括号 可以作为群组 匹配子表达式  2. 将相关的内容用()包裹起来,表示一个整体 => 此时可能不需要作为子表达式匹配  => 如何处理? 在小括号最前面加 ?: 
    // ?:  指定匹配模式后面的字符必须被匹配，但又不返回这些字符  (会作为正则表达式的规则,但是不会作为群组中内容返回)

    // var url = "https://www.baidu.com/";
    // var reg = /^(http|https):\/\/((?:www\.)?(?:\w{2,63}\.){0,2}\w{2,63}\.(?:com|net|edu|club|top|\w+))(?:\/)?$/;
    // console.log(reg.test(url)); // true


    // var arr = reg.exec(url);
    // console.log(arr);



</script>

</html>